package com.doctcloud.hisinfo.histable.enums;

import lombok.Getter;

/**
 * 内外科标志枚举类
 * 映射科室属于内科、外科或其他类型的标志
 */
@Getter
public enum DeptInternalSurgicalFlagEnum {

    /**
     * 内科
     */
    INTERNAL(0, "内科"),

    /**
     * 外科
     */
    SURGICAL(1, "外科"),

    /**
     * 其他科室
     */
    OTHER(9, "其他");

    /**
     * 标志编码（对应数据库字段值，整数类型）
     */
    private final Integer code;

    /**
     * 标志名称（用于前端展示或业务说明）
     */
    private final String name;

    /**
     * 构造方法
     * @param code 标志编码（整数类型，与字段类型一致）
     * @param name 标志名称
     */
    DeptInternalSurgicalFlagEnum(Integer code, String name) {
        this.code = code;
        this.name = name;
    }

    /**
     * 根据编码获取对应的枚举实例
     * @param code 标志编码（整数类型，如0、1、9）
     * @return 对应的枚举实例，若未匹配则返回OTHER
     */
    public static DeptInternalSurgicalFlagEnum getByCode(Integer code) {
        if (code == null) {
            return OTHER; // 处理null值，默认视为"其他"
        }
        for (DeptInternalSurgicalFlagEnum flag : values()) {
            if (flag.code.equals(code)) {
                return flag;
            }
        }
        return OTHER; // 未匹配的编码默认视为"其他"
    }

    /**
     * 根据编码获取标志名称
     * @param code 标志编码（可为null）
     * @return 标志名称，默认返回"其他"
     */
    public static String getNameByCode(Integer code) {
        return getByCode(code).getName();
    }
}